/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Manuales;

import java.awt.Desktop;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.net.URISyntaxException;
import javax.swing.JOptionPane;

/**
 * Esta clase en java se encarga de la ayuda necesaria para
 * cada uno de los usuarios del sistema.
 * Como son Jefe Bibliotecario, Bibliotecario y Usuarios.
 *
 *
 * @author sebaxtian
 * Archivo: Ayuda.java
 * @version 1.0
 * Fecha: jue jun 10 20:12:17 COT 2010
 */


public class Ayuda {

    //Atributos de clase
    public final static String PERFILJEFE = "Jefe";
    public final static String PERFILBIBLIOTECARIO = "Bibliotecario";
    public final static String PERFILUSUARIO = "Usuario";
    private Desktop escritorio;


    public Ayuda(String perfil) {
        escritorio = Desktop.getDesktop();
        try {
            cargarManualAyuda(perfil);
        } catch (URISyntaxException ex) {
            JOptionPane.showMessageDialog(null, "Error al cargar el archivo, verifique que exista", "Manual", JOptionPane.INFORMATION_MESSAGE);
        }
    }

    private void cargarManualAyuda(String perfil) throws URISyntaxException {
        File manual;
        if(perfil.equals(PERFILJEFE)){
            manual = new File(this.getClass().getResource("/Manuales/MPJ.pdf").getPath());
            abrirDocumento(manual);
        }
        if(perfil.equals(PERFILBIBLIOTECARIO)){
            manual = new File(this.getClass().getResource("/Manuales/MPB.pdf").getPath());
            abrirDocumento(manual);
        }
        if(perfil.equals(PERFILUSUARIO)){
            manual = new File(this.getClass().getResource("/Manuales/MPU.pdf").getPath());
            abrirDocumento(manual);
        }
    }

    private void abrirDocumento(File documento) {
        try {
            File documentoTmp = crearDocumentoTemporal(documento);
            //abre el documento temporal
            escritorio.open(documentoTmp);
        } catch (IOException ex) {
            JOptionPane.showMessageDialog(null, "No fue posible abrir el manual, verifique que tiene instalado un visor de documentos PDF", "Manual", JOptionPane.INFORMATION_MESSAGE);
        }
    }

    private File crearDocumentoTemporal(File documento) throws IOException {
        //Creas un nuevo directorio a nivel de tu jar.
        File directorio = new File("temp");
        directorio.mkdirs();
        directorio.setWritable(true);
        /*
         * String archivo = directorio.getCanonicalPath() + File.pathSeparator + "erfc.pdf";
            //nuevo archivo en esa direccion
            File temp = new File(archivo);
            InputStream is = this.getClass().getResourceAsStream("/microdi/docs/erfc.pdf");
         */
        //copias la direccion
        String archivo = directorio.getCanonicalPath() + File.separatorChar + documento.getName();
        //nuevo archivo en esa direccion
        File temp = new File(archivo);
        InputStream is = this.getClass().getResourceAsStream("/Manuales/"+documento.getName());
        FileOutputStream archivoDestino = new FileOutputStream(temp);
        FileWriter fw = new FileWriter(temp);
        byte[] buffer = new byte[512*1024];
        //lees el archivo hasta que se acabe...
        int nbLectura;
        while ((nbLectura = is.read(buffer)) != -1)
            archivoDestino.write(buffer, 0, nbLectura);
        //cierras el archivo,el inputS y el FileW
        fw.close();
        archivoDestino.close();
        is.close();

        return temp;
    }
}
